/**
 * request 网络请求工具
 * 更详细的 api 文档: https://github.com/umijs/umi-request
 */
import {extend} from 'umi-request';
import { message } from 'antd';
import { history } from '@umijs/max';
import { stringify } from '@ant-design/pro-components';
 
/**
 * 配置request请求时的默认参数
 */
const request = extend({
  credentials: 'include', // 默认请求是否带上cookie
  prefix: process.env.NODE_ENV === 'production' ? 'https://gitee.com/ezramiller' : undefined
  // requestType: 'form',
});
 
/**
 * 所以请求拦截器
 */
request.interceptors.request.use((url, options): any => {
  console.log(`do request url = ${url}`)
  return {
    url,
    options: {
      ...options,
      headers: {
      },
    },
  };
});
 
/**
 * 所有响应拦截器
 */
request.interceptors.response.use(async (response) => {
    const res = await response.clone().json();
    
    if (res.code === 0) {
      // 如果成功，则返回数据
      return res.data;
    }

    // 如果需要处理特定错误码（例如未授权）
    if (res.code === 40100) {
      message.error('请先登录');
      history.replace({
        pathname: '/user/login',
        search: stringify({ redirect: location.pathname }),
      });
    } else {
      // 对于其他错误，显示错误信息并抛出错误
      message.error(res.description || '请求失败');
    }
  }
);
 
export default request;